package algorithm.h23d_p17;

import org.junit.jupiter.api.Test;

import java.util.Random;
import java.util.Scanner;

public class FindMaxAreaTest {
    FindMaxArea findMaxArea = new FindMaxArea();
    //备注：静态方法不需要实例化，也不推荐实例化再运行
    @Test
    public void test1(){
        // 测试用例1：普通矩阵
        int[][] matrix1 = {
                {1, 0, 1, 1, 0},
                {1, 0, 1, 1, 1},
                {1, 1, 1, 1, 1},
                {1, 0, 1, 1, 0}
        };
        System.out.println("Test Case 1: " + findMaxArea.FindMaxAreaTwoDimention(matrix1)); // 6

        // 测试用例2：只有一个元素的矩阵
        int[][] matrix2 = {{1}};
        System.out.println("Test Case 2: " + findMaxArea.FindMaxAreaTwoDimention(matrix2)); // 1

        // 测试用例3：全是 0 的矩阵
        int[][] matrix3 = {
                {0, 0, 0, 0},
                {0, 0, 0, 0},
                {0, 0, 0, 0}
        };
        System.out.println("Test Case 3: " + findMaxArea.FindMaxAreaTwoDimention(matrix3)); // 0

        // 测试用例4：全是 1 的矩阵
        int[][] matrix4 = {
                {1, 1, 1, 1},
                {1, 1, 1, 1},
                {1, 1, 1, 1}
        };
        System.out.println("Test Case 4: " + findMaxArea.FindMaxAreaTwoDimention(matrix4)); // 12

        // 测试用例5：空矩阵
        int[][] matrix5 = {};
        System.out.println("Test Case 5: " + findMaxArea.FindMaxAreaTwoDimention(matrix5)); // 0

        // 测试用例6：空矩阵
        int[][] matrix6 = {
                {1,1,1,1,1,1,1,1,0},
                {1,1,1,1,1,1,1,1,0},
                {1,1,1,1,1,1,1,1,0},
                {1,1,1,1,1,1,0,0,0},
                {1,1,1,1,1,1,0,0,0},

        };
        System.out.println("Test Case 6: " + findMaxArea.FindMaxAreaTwoDimention(matrix6)); // 0

    }
    @Test
    public void test2(){
//        测试用例：随机矩阵
        Random r= new Random();
        Scanner sc =new Scanner(System.in);
        int rows=r.nextInt(6);
        int cols=r.nextInt(6);

//        获取一个随机矩阵
       int [][] matrixRandom=RandomMatrixGenerator.start(rows,cols);
        System.out.println("-------------------------------");
        System.out.println("Test Case : " + findMaxArea.FindMaxAreaTwoDimention(matrixRandom)); // 12

    }
}
